#include <my_header.h>

// 将src文件复制到目标dest,若dest存在则直接覆盖
int copy_file(const char *src, const char *dest) {
    // ./01_copy_file src dest
    FILE *src_fp = fopen(src, "rb");
    // 对返回值进行错误处理
    PTR_CHECK(src_fp, "fopen failed");

    FILE *dest_fp = fopen(dest, "wb");
    PTR_CHECK(dest_fp, "fopen dest");

    // 用于临时存储数据的中转站
    char buf[1024] = { 0 }; 
    size_t count;

    // 从源文件读取数据并写入目标文件
    while ((count = fread(buf, 1, sizeof(buf), src_fp)) > 0) {
        fwrite(buf, 1, count, dest_fp);
    }

    // 关闭文件流
    fclose(src_fp);
    fclose(dest_fp);
}

int main(int argc, char *argv[]) {
    ARGS_CHECK(argc, 3);
    int ret = copy_file(argv[1], argv[2]);
    if(ret != 0){
        fprintf(stderr, "File copy failed with error cede %d\n", ret);
        return -1;
    }
    return 0;
}
